Premier algorithme de Briggs

Modifié par Clemni

L’algorithme suivant – qui porte parfois le nom de Briggs – permet de calculer le logarithme décimal de tout réel compris entre 1 et 10… Ce qui est amplement suffisant pour calculer le logarithme de n’importe quel nombre.
En effet, pour tout réel positif \(x\) , il existe un réel  \(a\) compris entre 1 et 10 et un entier relatif  \(n\) tel que \(x=a \times 10^n\)  (il s’agit de l’écriture scientifique étendue à tous les réels, et pas seulement aux nombres décimaux). 
Ainsi, on a \(\log(x)=\log(a \times 10^n)=\log(a)+\log(10^n)=\log(a)+n\) .
Le principe de cet algorithme ressemble beaucoup à celui de l’algorithme de dichotomie, utilisé pour trouver une valeur approchée d’une solution d’une équation. 

On souhaite calculer le logarithme décimal d'un réel  \(a\) compris entre 1 et 10 avec une précision de  \(10^{-p}\)

On initialise nos valeurs

  • \(g\)  vaut 1 ( \(g\) représente la borne inférieure de l’intervalle).
  • \(d\)  vaut 10 ( \(d\) représente la borne supérieure de l’intervalle,  \(a\) sera toujours dans l’intervalle \([g;d]\) ).
  • \(\log\_g\)  vaut 0.
  • \(\log\_d\)  vaut 1.

Tant que l’écart entre \(\log\_g\)  et \(\log\_d\)  est supérieur à  \(10^{−p}\)

  • On calcule la moyenne géométrique  \(m\) de  \(g\) et  \(d\) : elle vaut  \(\sqrt{gd}\) .
  • On calcule la moyenne arithmétique \(\log\_m\)  de \(\log\_g\)  et \(\log\_d\) , qui correspond au logarithme de  \(m\) .
  • Si  \(a\) est supérieur à \(m\) , cela signifie que  \(a\) est entre  \(m\) et \(d\)  et donc que \(\log\_a\) est entre \(\log\_m\) et \(\log\_d\)  par croissance de la fonction  \(\log\) sur  \(]0;+\infty[\) .
    On remplace donc la valeur de  \(g\) par celle de  \(m\) .
    On remplace la valeur de  \(\log\_g\)  par celle de  \(\log\_m\) .
  • Sinon,  \(a\) est inférieur ou égal à \(m\) , cela signifie que  \(a\) est entre  \(g\) et  \(m\) et donc que  \(\log\_a\) est entre  \(\log\_g\) et  \(\log\_m\) .
    On remplace donc la valeur de  \(d\) par celle de  \(m\) .
    On remplace la valeur de \(\log\_d\)  par celle de  \(\log\_m\)

Une fois la boucle terminée, on renvoie la valeur de \(\log\_g\) .

Exercice

En reprenant le principe de l'algorithme énoncé ci-dessus, compléter le programme ci-dessous permettant de calculer le logarithme décimal d'un réel  \(a\) compris entre 1 et 10 avec une précision de \(10^{-p}\) .

À l'aide de cette fonction, donner une valeur de  \(\log(5)\) à \(10^{-10}\)  près.

from math import sqrt

def briggs(a, p):
    '''
    a : un réel compris entre 1 et 10 dont on souhaite calculer le logarithme décimal
    p : un entier qui indique la précision souhaitée (10 ** (-p) près )
    '''
    g = ...
    d = ...
    log_g = ...
    log_d = ...
    while log_d - log_g > 10**(-p):
        m = 
        log_m = ...
        if a > m :
            ... = m
            ... = log_m
        else :
            ... = m
            ... = log_m
    return round(log_g,p)

Source : https://lesmanuelslibres.region-academique-idf.fr
Télécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/mathematiques-terminale-specialite ou directement le fichier ZIP
Sous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0